Improve error trapping in xm.
Allow nfs_server to override dummy addr.
def call_with_args(self, fn, args, xargs=None):
(params, keys) = self.get_args(args, xargs=xargs)
- fn(*params, **keys)
+ return fn(*params, **keys)
def call_with_form_args(self, fn, fargs, xargs=None):
(params, keys) = self.get_form_args(fargs, xargs=xargs)
- fn(*params, **keys)
+ return fn(*params, **keys)
class ArgFn(Args):
"""Represent a remote HTTP operation as a function.
#if isinstance(val, types.ListType) and sxp.name(val) == 'val':
# val = val[1]
if isinstance(val, types.ListType) and sxp.name(val) == 'err':
- raise RuntimeError(val[1])
+ raise XendError(val[1])
if DEBUG: print '**val='; sxp.show(val); print
return val
setip = (vals.hostname or vals.netmask
or vals.gateway or vals.dhcp or vals.interface)
if not setip: return
+ dummy_nfs_server = '1.2.3.4'
ip = (vals.ip
- + ':' + '1.2.3.4'
+ + ':' + (vals.nfs_server or dummy_nfs_server)
+ ':' + vals.gateway
+ ':' + vals.netmask
+ ':' + vals.hostname
vals.cmdline_ip = ip
def preprocess_nfs(opts, vals):
- if (vals.nfs_root or vals.nfs_server):
- if (not vals.nfs_root) or (not vals.nfs_server):
- opts.err('Must set nfs root and nfs server')
- else:
- return
+ if not vals.nfs_root: return
+ if not vals.nfs_server:
+ opts.err('Must set nfs root and nfs server')
nfs = 'nfsroot=' + vals.nfs_server + ':' + vals.nfs_root
vals.extra = nfs + ' ' + vals.extra
from xen.xend import PrettyPrint
from xen.xend import sxp
-from xen.xend.XendClient import server
+from xen.xend.XendClient import XendError, server
from xen.xend.XendClient import main as xend_client_main
from xen.xm import create, shutdown
except socket.error, ex:
print >>sys.stderr, ex
self.err("Error connecting to xend, is xend running?")
+ except XendError, ex:
+ self.err(str(ex))
def main_call(self, args):
"""Main entry point. Dispatches to the progs.